home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / msnewout.arc / MACROS.ASM < prev    next >
Assembly Source File  |  1986-09-14  |  11KB  |  367 lines

  1.      .XLIST
  2. ;******************************************************************************
  3. ;
  4. ;      MACROS
  5. ;
  6. ;******************************************************************************
  7.  
  8. JUMPFAR  MACRO SEGW,OFFW
  9.                 DB      0EAH
  10.                 DW      OFFW
  11.                 DW      SEGW
  12.          ENDM
  13.  
  14. BEGINCOM MACRO SEGNAM
  15.      .SALL
  16.      PAGE  57,132
  17. SEGNAM     SEGMENT 'CODE'
  18.      ASSUME CS:SEGNAM,DS:SEGNAM,ES:SEGNAM
  19.      ORG   0100H
  20. O0O0O0O0:
  21.      ENDM
  22.  
  23.  
  24. ENDCOM     MACRO SEGNAM
  25. SEGNAM     ENDS
  26.      END   O0O0O0O0
  27.      ENDM
  28.  
  29.  
  30. @SVC MACRO CALL_NUM, PARM
  31. ;;GENERATES AN 'INT CALL_NUM', WITH PARM IN AH
  32.      IFNB <PARM>
  33.      MOV   AH,PARM
  34.      ENDIF
  35.      INT   CALL_NUM
  36.      ENDM
  37. ;
  38. ;
  39. ;
  40. @DOS MACRO FUNCTION,PARM
  41. ;;GENERATES A DOS FUNCTION CALL WITH PARM IN AL
  42.      IFNB <PARM>
  43.      MOV   AL,PARM
  44.      ENDIF
  45.      @SVC  21H,FUNCTION
  46.      ENDM
  47. ;
  48. ; SEND A MESSAGE
  49. ;
  50. @MSG MACRO TXT
  51.      LOCAL TXTSTR
  52.      LOCAL NSI
  53.      IFNB <TXT>
  54.      JMP   SHORT NSI
  55. TXTSTR     DB    TXT,13,10,'$'
  56. NSI:     PUSH  DX           ;SAVE REG
  57.      MOV   DX,OFFSET TXTSTR    ;POINT TO STRING
  58.      @DOS  9           ;DISPLAY IT
  59.      POP   DX           ;RESTORE REG
  60.      ENDIF
  61.      ENDM
  62. ;
  63. ;
  64. ;
  65. @DEX MACRO FUNCTION,PARM
  66. ;;GENERATES A DOS EXTENSION FUNCTION CALL WITH PARM IN AL VIA INT 15H
  67.      IFNB <PARM>
  68.      MOV   AL,PARM
  69.      ENDIF
  70.      @SVC  15H,FUNCTION
  71.      ENDM
  72. ;******************************************************************************
  73. ;
  74. ;  SPECIAL KEYBOARD CHARACTER EQUATES
  75. ;
  76. ;******************************************************************************
  77. KEYEQ     MACRO
  78. ;
  79. ;      ASCII CONTROL CODES
  80. ;
  81. $NUL    EQU   00H           ;
  82. $SOH    EQU   01H           ;^A
  83. $STX    EQU   02H           ;^B
  84. $ETX     EQU   03H           ;^C
  85. $EOT     EQU   04H           ;^D
  86. $ENQ     EQU   05H           ;^E
  87. $ACK     EQU   06H           ;^F
  88. $BEL     EQU   07H           ;BEEP
  89. $BS     EQU   08H           ;^H
  90. $HT     EQU   09H           ;^I
  91. $LF     EQU   0AH           ;LINE FEED
  92. $VT     EQU   0BH           ;^K
  93. $FF     EQU   0CH           ;^L
  94. $CR     EQU   0DH           ;CARRIAGE RETURN
  95. $SO     EQU   0EH           ;^N
  96. $SI     EQU   0FH           ;^O
  97. $DLE     EQU   10H           ;^P
  98. $DC1    EQU     11H     ; DEV CTL 1 = ^Q
  99. $XON    EQU     11H     ; CNTRL 1 ^Q
  100. $DC2    EQU     12H     ; DEV CTL 2 = ^R
  101. $DC3    EQU     13H     ; DEV CTL 3 = ^S
  102. $XOFF   EQU     13H     ; CNTRL 3 = ^S
  103. $DC4     EQU   14H           ;DEV CTL 4 = ^T
  104. $NAK     EQU   15H           ;^U
  105. $SYN     EQU   16H           ;^V
  106. $ETB     EQU   17H           ;^W
  107. $CAN     EQU   18H           ;^X
  108. $EM     EQU   19H           ;^Y
  109. $SUB     EQU   1AH           ;^Z
  110. $ESC     EQU   1BH           ;
  111. $FS     EQU   1CH           ;CURSOR RIGHT
  112. $GS     EQU   1DH           ;CURSOR LEFT
  113. $RS     EQU   1EH           ;CURSOR UP
  114. $US     EQU   1FH           ;CURSOR DOWM
  115. ;
  116. ; NUMERIC PAD KEYS
  117. ;
  118. $HOME     EQU   71
  119. $CSRUP     EQU   72
  120. $PGUP     EQU   73
  121. $CSRL     EQU   75
  122. $CSRR     EQU   77
  123. $END     EQU   79
  124. $CSRDN     EQU   80
  125. $PGDN     EQU   81
  126. $INS     EQU   82
  127. $DEL     EQU   83
  128. ;
  129. ; PROGRAM FUNCTION KEYS
  130. ;
  131. $PF01     EQU   3BH           ;STANDARD PF KEY
  132. $PF02     EQU   3CH           ;STANDARD PF KEY
  133. $PF03     EQU   3DH           ;STANDARD PF KEY
  134. $PF04     EQU   3EH           ;STANDARD PF KEY
  135. $PF05     EQU   3FH           ;STANDARD PF KEY
  136. $PF06     EQU   40H           ;STANDARD PF KEY
  137. $PF07     EQU   41H           ;STANDARD PF KEY
  138. $PF08     EQU   42H           ;STANDARD PF KEY
  139. $PF09     EQU   43H           ;STANDARD PF KEY
  140. $PF10     EQU   44H           ;STANDARD PF KEY
  141. ;
  142. ; SHIFTED PROGRAM FUNCTION KEYS
  143. ;
  144. $SPF01     EQU   54H           ;STANDARD PF KEY
  145. $SPF02     EQU   55H           ;STANDARD PF KEY
  146. $SPF03     EQU   56H           ;STANDARD PF KEY
  147. $SPF04     EQU   57H           ;STANDARD PF KEY
  148. $SPF05     EQU   58H           ;STANDARD PF KEY
  149. $SPF06     EQU   59H           ;STANDARD PF KEY
  150. $SPF07     EQU   5AH           ;STANDARD PF KEY
  151. $SPF08     EQU   5BH           ;STANDARD PF KEY
  152. $SPF09     EQU   5CH           ;STANDARD PF KEY
  153. $SPF10     EQU   5DH           ;STANDARD PF KEY
  154. ;
  155. ; CONTROL PROGRAM FUNCTION KEYS
  156. ;
  157. $CPF01     EQU   5EH           ;STANDARD PF KEY
  158. $CPF02     EQU   5FH           ;STANDARD PF KEY
  159. $CPF03     EQU   60H           ;STANDARD PF KEY
  160. $CPF04     EQU   61H           ;STANDARD PF KEY
  161. $CPF05     EQU   62H           ;STANDARD PF KEY
  162. $CPF06     EQU   63H           ;STANDARD PF KEY
  163. $CPF07     EQU   64H           ;STANDARD PF KEY
  164. $CPF08     EQU   65H           ;STANDARD PF KEY
  165. $CPF09     EQU   66H           ;STANDARD PF KEY
  166. $CPF10     EQU   67H           ;STANDARD PF KEY
  167. ;
  168. ; ALTERNATE PROGRAM FUNCTION KEYS
  169. ;
  170. $APF01     EQU   68H           ;STANDARD PF KEY
  171. $APF02     EQU   69H           ;STANDARD PF KEY
  172. $APF03     EQU   6AH           ;STANDARD PF KEY
  173. $APF04     EQU   6BH           ;STANDARD PF KEY
  174. $APF05     EQU   6CH           ;STANDARD PF KEY
  175. $APF06     EQU   6DH           ;STANDARD PF KEY
  176. $APF07     EQU   6EH           ;STANDARD PF KEY
  177. $APF08     EQU   6FH           ;STANDARD PF KEY
  178. $APF09     EQU   70H           ;STANDARD PF KEY
  179. $APF10     EQU   71H           ;STANDARD PF KEY
  180.      ENDM
  181. ;******************************************************************************
  182. ;
  183. ;  COMM CARD REGISTER EQUATES EQUATES
  184. ;
  185. ;******************************************************************************
  186. COMEQ     MACRO
  187. ;
  188. ;      INS8250 ACE REGISTERS FOR COMM PORT 1
  189. ;
  190. THRCOM1  EQU    3F8H           ;TRANS HOLDING REGISTER (WRITE)
  191. RBRCOM1  EQU    3F8H           ;RECEIVER BUFFER REGISTER (READ)
  192. IERCOM1  EQU    3F9H           ;INTERRUPT ENABLE REGISTER
  193. LCRCOM1  EQU    3FBH           ;LINE CONTROL REGISTER.
  194.                    ;BIT 7 OF LCR IS "DLAB".  DLAB MUST
  195.                    ;BE ZERO TO ACCESS THR, RBR, IER.
  196. MCRCOM1  EQU    3FCH           ;MODEM CONTROL REGISTER
  197. LSRCOM1  EQU    3FDH           ;LINE STATUS REGISTER
  198. MSRCOM1  EQU    3FEH           ;MODEM STATUS REGISTER
  199. ;
  200. ;      INS8250 ACE REGISTERS FOR COMM PORT 2
  201. ;
  202. THRCOM2  EQU    2F8H           ;TRANS HOLDING REGISTER (WRITE)
  203. RBRCOM2  EQU    2F8H           ;RECEIVER BUFFER REGISTER (READ)
  204. IERCOM2  EQU    2F9H           ;INTERRUPT ENABLE REGISTER
  205. LCRCOM2  EQU    2FBH           ;LINE CONTROL REGISTER.
  206.                    ;BIT 7 OF LCR IS "DLAB".  DLAB MUST
  207.                    ;BE ZERO TO ACCESS THR, RBR, IER.
  208. MCRCOM2  EQU    2FCH           ;MODEM CONTROL REGISTER
  209. LSRCOM2  EQU    2FDH           ;LINE STATUS REGISTER
  210. MSRCOM2  EQU    2FEH           ;MODEM STATUS REGISTER
  211.      ENDM
  212.  
  213.  
  214.  
  215. ;******************************************************************************
  216. ;
  217. ;  BIOS LOW CORE AREA DEFINITIONS
  218. ;
  219. ;******************************************************************************
  220. BIOSM     MACRO LSTCTL
  221.      IFB   <LSTCTL>
  222.      .XLIST
  223.      ENDIF
  224.      IFNB  <LSTCTL>
  225.      .LIST
  226.      ENDIF
  227. BIOSMEM  SEGMENT AT 0040H
  228.  
  229. ;
  230. ;  COMM CARD BASE ADDRESSES
  231. ;
  232. RS232_BASE LABEL WORD           ;OFFICIAL IBM TAG
  233. COM1BASE DW    ?           ;COMM CARD BASE ADDRESSES
  234. COM2BASE DW    ?
  235. COM3BASE DW    ?
  236. COM4BASE DW    ?
  237. ;
  238. ;  PRINTER CARD BASE ADDRESSES
  239. ;
  240. PRINTER_BASE LABEL WORD        ;OFFICIAL IBM TAG
  241. PRT1BASE DW    ?           ;PRINTER CARD BASE ADDRESSES
  242. PRT2BASE DW    ?
  243. PRT3BASE DW    ?
  244. PRT4BASE DW    ?
  245.  
  246. EQPFLAG  DW    ?           ;INSTALLED EQUIPMENT FLAG
  247. MFG_TST  DB    ?
  248. MEMORY_SIZE    DW   ?           ;MEM SIZE IN K BYTES
  249. MFG_ERR_FLAG   DW   ?           ;SCRATCHPAD FOR MFG ERROR CODES
  250. ;
  251. ;  KEYBOARD DATA AREAS
  252. ;
  253. KB_FLAG        DB   ?           ;KEYBOARD FLAG BYTE 1
  254. INS_STATE      EQU  80H        ;  INSERT IS ACTIVE
  255. CAPS_STATE     EQU  40H        ;  CAPS LOCK IS ACTIVE
  256. NUM_STATE      EQU  20H        ;  NUM LOCK IS ACTIVE
  257. SCROLL_STATE   EQU  10H        ;  SCROLL LOCK IS ACTIVE
  258. ALT_SHIFT      EQU  08H        ;  ALT SHIFT IS DEPRESSED
  259. CTL_SHIFT      EQU  04H        ;  CTL SHIFT IS DEPRESSED
  260. LEFT_SHIFT     EQU  02H        ;  LEFT SHIFT KEY IS DEPRESSED
  261. RIGHT_SHIFT    EQU  01H        ;  RIGHT SHIFT KEY IS DEPRESSED
  262.  
  263. KB_FLAG_1      DB   ?           ;SECOND KEYBOARD STATUS BYTE
  264.  
  265. INS_SHIFT      EQU  80H        ;INSERT KEY IS DEPRESSED
  266. CAPS_SHIFT     EQU  40H        ;CAPS LOCK KEY IS DEPRESSED
  267. NUM_SHIFT      EQU  20H        ;NUM LOCK KEY IS DEPRESSED
  268. SCROLL_SHIFT   EQU  10H        ;SCROLL LOCK KEY IS DEPRESSED
  269. HOLD_STATE     EQU  08H        ;SUSPEND STATE HAS BEEN TOGGLED
  270.  
  271. ALT_INPUT      DB   ?           ;STORAGE FOR ALTERNATE KEYPAD ENTRY
  272. BUFFER_HEAD    DW   ?           ;POINTER TO KB BUFFER START
  273. BUFFER_TAIL    DW   ?           ;POINTER TO KB BUFFER END
  274. KB_BUFFER      DW   16 DUP (?)       ;ROOM FOR 15 ENTRIES
  275. KB_BUFFER_END  LABEL WORD
  276. ;
  277. ; HEAD = TAIL = EMPTY BUFFER
  278.  
  279. NUM_KEY        EQU  69           ;SCAN CODE FOR NUM LOCK KEY
  280. SCROLL_KEY     EQU  70           ;SCROLL LOCK KEY
  281. ALT_KEY        EQU  56           ;ALT KEY
  282. CTL_KEY        EQU  29           ;CONTROL KEY
  283. CAPS_KEY       EQU  58           ;CAPS LOCK KEY
  284. LEFT_KEY       EQU  42           ;LEFT SHIFT KEY
  285. RIGHT_KEY      EQU  54           ;RIGHT SHIFT KEY
  286. INS_KEY        EQU  82           ;INSERT KEY
  287. DEL_KEY        EQU  83           ;DELETE KEY
  288.  
  289. ;
  290. ;  DISKETTE DATA AREAS
  291. ;
  292. SEEK_STATUS    DB   ?           ;DRIVE RECALIBRATION STATUS
  293.                    ;BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE NEXT
  294.                    ;SEEK IF BIT = 0
  295. INT_FLAG       EQU  80H        ;INTERRUPT OCCURANCE FLAG
  296.  
  297. MOTOR_STATUS   DB   ?           ;STATUS OF DRIVE MOTORS
  298.                    ;BIT 3-0 = DRIVE 3-0 MOTOR RUNNING
  299.                    ;BIT 7 = WRITE OPERATION, DELAY REQUIRED
  300. MOTOR_COUNT    DB   ?           ;TIME OUT COUNT FOR DRIVE MOTOR TURN OFF
  301. MOTOR_WAIT     EQU  37           ;2 SECOND DELAY (@ 18.2 INTS/SEC)
  302. DISKETTE_STATUS DB  ?           ;RETURN CODE STATUS BYTE
  303. TIME_OUT       EQU  80H        ;  ATTACHMENT FAILED TO RESPOND
  304. BAD_SEEK       EQU  40H        ;  SEEK OPS FAILED
  305. BAD_NEC        EQU  20H        ;  NEC CONTROLLER FAILED
  306. BAD_CRC        EQU  10H        ;  CRC ERROR ON DISK READ
  307. DMA_BOUNDARY   EQU  09H        ;  ATTEMPT DMA ACROSS 64K BOUNDARY
  308. BAD_DMA        EQU  08H        ;  DMA OVERRUN
  309. RECORD_NOT_FND EQU  04H        ;  REQUESTED SECTOR NOT FOUND
  310. WRITE_PROTECT  EQU  03H        ;  WRITE ATTEMPT ON PROT DISK
  311. BAD_ADDR_MARK  EQU  02H        ;  ADDRESS MARK NOT FOUND
  312. BAD_CMD        EQU  01H        ;  BAD COMMAND PASSED TO DISKETTE I/O
  313.  
  314. NEC_STATUS     DB   7 DUP (?)       ;STATUS BYTES FROM NEC
  315. ;
  316. ; VIDEO DISPLAY DATA AREA
  317. ;
  318. CRT_MODE       DB   ?           ;CURRENT CRT MODE
  319. CRT_COLS       DW   ?           ;# COLUMNS ON CRT
  320. CRT_LEN        DW   ?           ;LENGTH OF REGEN IN BYTES
  321. CRT_START      DW   ?           ;STARTING ADDRESS IN REGEN BUFFER
  322. CURSOR_POSN    DW   8 DUP (?)       ;CURSOR POSITION FOR EACH OF 8 PAGES
  323. CURSOR_MODE    DW   ?           ;CURRENT CURSOR MODE SETTING
  324. ACTIVE_PAGE    DB   ?           ;CURRENT ACTIVE PAGE
  325. ADDR_6845      DW   ?           ;I/O ADDRESS BASE FOR DISPLAY CARD
  326. CRT_MODE_SET   DB   ?           ;CURRENT SETTING OF THE 3X8 REGISTER
  327. CRT_PALETTE    DB   ?           ;CURRENT PALETTE SETTING - COLOR CARD
  328. ;
  329. ;  POST DATA AREA
  330. ;
  331. IO_ROM_INIT    DW   ?           ;POINTER TO OPTIONAL ROM INIT ROUTINE
  332. IO_ROM_SEG     DW   ?           ;IO ROM SEGMENT
  333. INTR_FLAG      DB   ?           ;FLAG TO INDICATE INTERRUPT OCCURED
  334. ;
  335. ;  TIMER DATA AREA
  336. ;
  337. TIMER_LOW      DW   ?           ;LOW WORD OF TIMER COUNT
  338. TIMER_HIGH     DW   ?           ;HI WORD OF TIMER COUNT
  339. TIMER_OFL      DB   ?           ;TIMER HAS OVERFLOWED SINCE LAST READ
  340. ;
  341. ;  SYSTEM DATA AREA
  342. ;
  343. BIOS_BREAK     DB   ?           ;BIT 7 = 1 IF BREAK KEY HIT
  344. RESET_FLAG     DW   ?           ;= 1234H IF KB RESET IN PROGRESS
  345. ;
  346. ;  FIXED DISK DATA AREAS
  347. ;
  348.            DW   ?
  349.            DW   ?
  350. ;
  351. ;  PRINTER AND RS232 TIME OUT VALUES
  352. ;
  353. PRINT_TIM_OUT  DB   4 DUP (?)       ;TIME OUT VALUES FOR EACH PRINTER
  354. RS232_TIM_OUT  DB   4 DUP (?)       ;TIME OUT VALUES FOR EACH COMM CARD
  355. ;
  356. ;  ADDITIONAL KEYBOARD DATA AREA
  357. ;
  358. BUFFER_START   DW   ?
  359. BUFFER_END     DW   ?
  360. BIOSMEM  ENDS
  361.      .LIST
  362.      ENDM
  363. ;
  364. ;  END OF MACRO LIBRARY
  365. ;
  366.      .LIST
  367.